// import QtQuick 1.0 // to target S60 5th Edition or Maemo 5
import QtQuick 1.1
import QMLFile 1.0
import "Components"

Item {
    id: _root
    anchors.fill: parent
    visible: true

    property bool exist: false      // 設定ファイルがあるか
    property string descFile: ""    // 設定ファイルのパス
//    property string paths: []       // ロードした結果
    property string animeDir: ""    // 起動アニメのディレクトリ

    signal okClicked

    MouseArea{
        anchors.fill: parent
        acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MiddleButton
        hoverEnabled: true
    }

    onVisibleChanged: {
        if(visible === true){
            //表示された
        }
    }

    // 設定が変更された
    onAnimeDirChanged: {
        var list = _file.getEntryList(animeDir, QMLFile.Dirs, ["bootanimation*"]);

        _animeSelectList.clear();

        if(list.length < 1){
            //クリア
            exist = false;
            descFile = "";
        }else{
            for(var i=0; i<list.length; i++){
                _animeSelectList.append(list[i]);
            }
            //１つ目の設定をする
            descFile = animeDir + list[0] + "/desc.txt";
        }
    }

    // 設定が変更された
    onDescFileChanged:{
        _animeList.model.clear();

        if(descFile.length < 1){
            //クリア
            exist = false;
        }else{
            //ロード
            var lines = _file.readTextFile(descFile);
            for(var i=0; i<lines.length; i++){
                append(lines[i]);
            }
            exist = true;
        }
    }

    // p r
    //  count(int): loop数(従来のp命令と同様)
    //  pause(int): Wait時間(従来のp命令と同様)
    //  path(string): ディレクトリ名 rの時はスペース区切り

    //設定ファイルの1行をしていして解析して読み込む
    function append(line){
        var items = line.split(" ");
        var base_path = descFile.replace("desc.txt", "");
        if(items[0] === "p" || items[0] === "r"){
            var datas = "";
            for(var i=3; i<items.length; i++){
                if(i > 3){
                    datas += "\n";
                }
                datas += items[i];
            }
            _animeList.model.append({"_items": datas});
        }
    }

    function getPaths(){
        var paths = [];
        var base_path = descFile.replace("desc.txt", "");
        var list;
        for(var l=0; l<_animeList.model.count; l++){
            list = _animeList.itemAt(l).getList();
            paths.push(base_path + list.get(list.currentIndex)._title + "/");
        }
        return paths;
    }

    DialogBase{
        id: _dlg
        anchors.centerIn: parent
        width: parent.width * 0.8
        height: parent.height * 0.8
        dialogTitle: qsTr("Boot animation setting")

        Column{
            anchors.top: _dlg.titleBottom
            anchors.topMargin: 10
            anchors.left: parent.left
            anchors.right: parent.right
            anchors.leftMargin: 10
            anchors.rightMargin: 10

            spacing: 10

            Text{
                color: "#ffffff"
                text: qsTr("Select animations...")
            }
            ListViewSimple{
                id: _animeSelectList
                width: _dlg.width - parent.anchors.leftMargin - parent.anchors.rightMargin
                height: 30
                clip: true
                scrollBarVisible: false
                orientation: ListView.Horizontal
                onClicked: {
                    descFile = animeDir + title + "/desc.txt";
                }
                Component.onCompleted: {
                }
            }

            Text{
                color: "#ffffff"
                text: qsTr("Select animation parts...")
            }

            Repeater{
                id: _animeList
                model:ListModel{}
                Row{
                    spacing: 5
                    height: _list.height
                    Text{
                        id: _indexNo
                        width: paintedWidth
                        height: paintedHeight
                        anchors.verticalCenter: parent.verticalCenter
                        text: index + " : "
                        color: "#ffffff"
                    }
                    ListViewSimple{
                        id: _list
                        width: _dlg.width - _indexNo.width * 4
                        height: 30
                        clip: true
                        scrollBarVisible: false
                        orientation: ListView.Horizontal
                        Component.onCompleted: {
                            var items = _items.split("\n");
                            for(var i=0;i<items.length;i++){
                                append(items[i]);
                            }
                        }
                    }
                    function getList(){
                        return _list;
                    }
                }

            }
        }

        Row{
            anchors.horizontalCenter: parent.horizontalCenter
            anchors.bottom: parent.bottom
            anchors.bottomMargin: 10
            spacing: 10

            Button{
                text: "  OK  "
                onClicked: {
                    _root.visible = false;
                    _root.okClicked();
                }
            }
            Button{
                text: " Cancel "
                onClicked: {
                    _root.visible = false;
                }
            }
        }
    }
    Component.onCompleted: {
//        console.debug("boot anime loaded");
//        _animeList.model.append({"_items" : "AAA\nBBB"});
//        _animeList.model.append({"_items" : "AAA\nBBB\nCCC\nDDDD"});
//        _animeList.model.append({"_items" : "AAA\nBBB\nCCC\nDDDD\naaaa\nGGGG\nEEEEE"});
//        _animeList.model.append({"_items" : "AAA\nBBB\nCCC\nDDDD\n234\n4"});
//        _animeList.model.append({"_items" : "AAA\nBBB\nCCC\nDDDD"});
//        _animeList.model.append({"_items" : "AAA\nBBB\nCCC\nDDDD"});
    }
}
